package com.zgjkhis.modules.util;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.google.gson.Gson;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;


/**
 * TODO
 * @package  com.njga.yzq.interfaces.utils
 * @file     JsonUtil.java
 * @Description: json和bean相互转换工具类
 * @author   yxl
 * @date     2020年3月12日 下午3:18:28
 * @version  V 1.0
 */
public class JsonUtil {
    /**
     *
     * @author yxl
     * @method jsonString2Obj
     * @Description: json转对象
     * @param json
     * @param clazz
     * @return
     * @return T
     * @date 2020年3月12日 下午3:12:46
     */
    public static <T> T jsonString2Obj(String json, Class<T> clazz) {
        if (CharUtil.isEmpty(json) || clazz == null) {
            return null;
        }
        return new Gson().fromJson(json, clazz);
    }

    /**
     *
     * @author yxl
     * @method JSONString2List
     * @Description: 数组转List
     * @param json
     * @param clazz
     * @return
     * @return List<T>
     * @date 2020年3月27日 上午10:58:10
     */
    public static <T> List<T>  jsonString2List(String json,Class<T> clazz){
    	  if (CharUtil.isEmpty(json) || clazz == null) {
              return null;
          }
    	  JSONArray array=JSONArray.parseArray(json);
    	  List<T> list=new ArrayList<T>();
    	  for (int i = 0; i < array.size(); i++) {
    		  JSONObject jsonObject=array.getJSONObject(i);
    		  list.add(new Gson().fromJson(jsonObject.toString(), clazz));
    	  }
    	return list;
    }

    /**
     *
     * @author yxl
     * @method obj2JsonString
     * @Description: 对象转json
     * @param obj
     * @return
     * @return String
     * @date 2020年3月12日 下午3:13:08
     */
    public static String obj2JsonString(Object obj) {
        if (obj == null) {
            return null;
        }
        return new Gson().toJson(obj);
    }

    /**
     *
     * @author yxl
     * @method map2JsonString
     * @Description: map集合转换成json字符串
     * @param map
     * @return
     * @return String
     * @date 2020年3月12日 下午3:18:14
     */
    @SuppressWarnings("unused")
	public static String map2JsonString(Map<String, Object> map){
        if (map == null || map.size() == 0) {
            return null;
        }
        Iterator<Map.Entry<String, Object>> iterator = map.entrySet().iterator();
        JSONObject jsonObject = new JSONObject();
        while (iterator.hasNext()) {
            Map.Entry<String, Object> mapNext = iterator.next();
            jsonObject.put(mapNext.getKey(), mapNext.getValue());
        }
        if (jsonObject != null) {
            return jsonObject.toString();
        } else {
            return null;
        }
    }
}
